package br.com.hmm.businesslogic;

import java.util.ArrayList;
import java.util.List;

import br.com.hmm.dao.ContaDAO;
import br.com.hmm.entidade.Conta;

public class ContaService {
	
	private ContaService(){
		
	}
	
	public static boolean inserir(Conta conta) throws Exception{
		try{
			ContaDAO cDao = new ContaDAO();
			if(cDao.inserir(conta) == true){
				return true;
			}			
		}catch (Exception e) {
			throw new Exception(e.getLocalizedMessage());
		}
		
		return false;
	}
	
	
	public static boolean update(Conta conta) throws Exception{
		try{
			ContaDAO cDao = new ContaDAO();
			if(cDao.atualizar(conta) == true){
				return true;
			}
		}catch (Exception e) {
			throw new Exception("Erro ao atualizar." + e.getLocalizedMessage());
		}
		return false;
	}
	
	
	public static boolean delete(Conta conta) throws Exception{
		try{
			ContaDAO cDao = new ContaDAO();
			if(cDao.delete(conta) == true){
				return true;
			}
		}catch (Exception e) {
			throw new Exception("Erro ao remover." + e.getLocalizedMessage());
		}
		
		return false;
	}
	
	public static Conta findById(int id) throws Exception{
		try{
			ContaDAO cDao = new ContaDAO();
			Conta c = cDao.findById(id);
			if(c != null){
				return c;
			}
		}catch (Exception e) {
			throw new Exception("Conta não existe" + e.getLocalizedMessage());
		}
		return null;
	}
	
	public static List<Conta> list() throws Exception{
		try{
			ContaDAO cDao = new ContaDAO();
			List<Conta> lc = new ArrayList<Conta>();
			lc = cDao.list();
			if(lc != null){
				return lc;
			}
		}catch (Exception e) {
			throw new Exception("Nenhuma Conta encontrada." + e.getLocalizedMessage());
		}
		return null;
	}
	
	public static boolean updateSaldo(Conta conta) throws Exception{
		try{
			ContaDAO cDao = new ContaDAO();
			if(cDao.atualizaSaldo(conta) == true){
				return true;
			}
		}catch(Exception e){
			throw new Exception("Não foi possível atualizar o saldo da conta. " + e.getLocalizedMessage());
		}
		return false;
	}
	
	public static double getSaldo(int id) throws Exception{
		double dadosConta = 0;
		try{
			ContaDAO cDao = new ContaDAO();
			dadosConta = cDao.listSaldo(id);
			return dadosConta;
		}catch (Exception e) {
			throw new Exception("Não existem dados referentes a essa conta. " + e.getLocalizedMessage());
		}
	}
	

}
